<!--
  This file is a part of the open-eBackup project.
  This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
  If a copy of the MPL was not distributed with this file, You can obtain one at
  http://mozilla.org/MPL/2.0/.
  
  Copyright (c) [2024] Huawei Technologies Co.,Ltd.
  
  THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
  EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
  MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  -->

<lv-form [formGroup]="formGroup" class="formGroup" lvKeepRequiredWidth>
    <lv-form-item *ngIf="!isDrill">
        <lv-form-label>
            {{ 'protection_restore_to_label' | i18n }}
        </lv-form-label>
        <lv-form-control>
            <lv-radio-group formControlName="restoreTo" [lvGroupName]="'restoreToGroup'">
                <lv-group [lvGutter]="'20px'">
                    <lv-radio [lvValue]="restoreLocationType.ORIGIN" [lvDisabled]="disabledOrigin" [lv-tooltip]="
                    disabledOrigin
                      ? ('protection_cloud_origin_restore_disabled_label' | i18n)
                      : ''
                    ">
                        {{ 'common_restore_to_origin_location_label' | i18n }}
                    </lv-radio>
                    <lv-radio [lvValue]="restoreLocationType.NEW">
                        {{ 'common_restore_to_new_location_label' | i18n }}
                    </lv-radio>
                </lv-group>
            </lv-radio-group>
        </lv-form-control>
    </lv-form-item>
    <ng-container *ngIf="formGroup.value.restoreTo === restoreLocationType.NEW">
        <aui-select-tag [formGroup]="formGroup" (updateTable)="updateTable($event)" [targetKey]="'cluster'"></aui-select-tag>
    </ng-container>
    <lv-form-item>
        <lv-form-label [lvRequired]="formGroup.value.restoreTo === restoreLocationType.NEW">
            {{ location }}
            <i *ngIf="formGroup.value.restoreTo === restoreLocationType.NEW" lv-icon="aui-icon-help"
                lv-tooltip="{{ 'protection_mysql_database_restore_tips_label' | i18n }}"
                class="configform-constraint" lvColorState="true">
            </i>
        </lv-form-label>
        <lv-form-control>
            <lv-select formControlName="cluster" [lvOptions]="clusterOptions" lvValueKey="key" lvShowFilter
                lvFilterKey="label" lvFilterMode="contains"
                [lvDisabled]="formGroup.value.restoreTo === restoreLocationType.ORIGIN">
            </lv-select>
        </lv-form-control>
    </lv-form-item>

    <ng-container *ngIf="rowCopy.resource_sub_type === dataMap.Resource_Type.MySQLDatabase.value">
        <ng-container *ngIf="formGroup.value.restoreTo === restoreLocationType.NEW">
            <lv-form-item>
                <lv-form-label lvRequired>
                    {{ 'common_target_to_database_label' | i18n }}
                    <i lv-icon="aui-icon-help"
                        lv-tooltip="{{ 'protection_mysql_restore_same_database_tips_label' | i18n }}"
                         class="configform-constraint" lvColorState="true">
                    </i>
                </lv-form-label>
                <lv-form-control>
                    <lv-select formControlName="database" [lvOptions]="databaseOptions" lvValueKey="key" lvShowFilter
                        lvFilterKey="label" lvFilterMode="contains">
                    </lv-select>
                </lv-form-control>
            </lv-form-item>
        </ng-container>
        <lv-form-item>
            <lv-form-label>
                {{ 'common_databsae_rename_label' | i18n }}
            </lv-form-label>
            <lv-form-control>
                <lv-switch formControlName="replaceDatabase"></lv-switch>
                <div *ngIf="formGroup.value.replaceDatabase" class="newName">
                    <lv-form-item>
                        <lv-form-label lvRequired>
                            {{ 'protection_new_name_label' | i18n }}
                            <i lv-icon="aui-icon-help" [lv-tooltip]="tipsTemplate"
                                class="configform-constraint" lvColorState="true">
                            </i>
                            <ng-template #tipsTemplate>
                                <span innerHTML="{{'protection_mysql_new_name_tips_label' | i18n}}"></span>
                            </ng-template>
                        </lv-form-label>
                        <lv-form-control [lvErrorTip]="newNameErrorTip">
                            <input lv-input formControlName="newName" style="width: 380px;" />
                        </lv-form-control>
                    </lv-form-item>
                    <div *ngIf="formGroup?.get('newName').status === 'VALID'">
                        <i style="display: inline-block; margin-right: 4px;" lv-icon="lv-icon-status-info"
                            lvColorState="true" class="type-icon"></i>
                        <span class="form-tips">
                            {{ 'protection_mysql_same_database_tips_label' | i18n }}
                        </span>
                    </div>
                </div>
            </lv-form-control>
        </lv-form-item>
    </ng-container>
    <lv-form-item>
        <lv-form-label>
            {{ 'explore_force_recovery_label' | i18n }}
            <i lv-icon="aui-icon-help" lv-tooltip="{{'explore_force_recovery_tips_label' | i18n}}"
                 class="configform-constraint" lvColorState="true">
            </i>
        </lv-form-label>
        <lv-form-control>
            <lv-switch formControlName="forceRecovery"></lv-switch>
        </lv-form-control>
    </lv-form-item>
    <lv-form-item *ngIf="showForbiddenStrictMode">
        <lv-form-label>
            {{ 'common_forbidden_strict_mode_label' | i18n }}
            <i lv-icon="aui-icon-help" lv-tooltip="{{'common_forbidden_strict_mode_tips_label' | i18n}}"
                 class="configform-constraint" lvColorState="true">
            </i>
        </lv-form-label>
        <lv-form-control>
            <lv-switch formControlName="forbiddenStrictMode"></lv-switch>
        </lv-form-control>
    </lv-form-item>
    <div class="advanced-container" *ngIf="!isDrill">
        <lv-collapse [lvType]="'simple'">
            <lv-collapse-panel [lvTitle]="titleTpl" [lvExpanded]="false">
                <lv-form-item>
                    <lv-form-label>
                        {{ 'protection_restore_pre_script_label' | i18n }}
                        <i lv-icon="aui-icon-help"  lv-tooltip="{{
                'common_script_oracle_linux_help_label' | i18n
              }}" class="configform-constraint" lvColorState="true">
                        </i>
                    </lv-form-label>
                    <lv-form-control [lvErrorTip]="scriptErrorTip">
                        <input formControlName="preScript" lv-input
                            placeholder="{{ 'common_script_linux_placeholder_label' | i18n }}" />
                    </lv-form-control>
                </lv-form-item>
                <lv-form-item>
                    <lv-form-label>
                        {{ 'protection_restore_post_script_label' | i18n }}
                        <i lv-icon="aui-icon-help"  lv-tooltip="{{
                'common_script_oracle_linux_help_label' | i18n
              }}" class="configform-constraint" lvColorState="true">
                        </i>
                    </lv-form-label>
                    <lv-form-control [lvErrorTip]="scriptErrorTip">
                        <input formControlName="postScript" lv-input
                            placeholder="{{ 'common_script_linux_placeholder_label' | i18n }}" />
                    </lv-form-control>
                </lv-form-item>
                <lv-form-item>
                    <lv-form-label>
                        {{ 'protection_restore_fail_script_label' | i18n }}
                        <i lv-icon="aui-icon-help"  lv-tooltip="{{
                'common_script_oracle_linux_help_label' | i18n
              }}" class="configform-constraint" lvColorState="true">
                        </i>
                    </lv-form-label>
                    <lv-form-control [lvErrorTip]="scriptErrorTip">
                        <input formControlName="executeScript" lv-input
                            placeholder="{{ 'common_script_linux_placeholder_label' | i18n }}" />
                    </lv-form-control>
                </lv-form-item>
            </lv-collapse-panel>
        </lv-collapse>
    </div>
</lv-form>

<ng-template #titleTpl>
    <lv-group lvGutter="2px">
        <span class="aui-h3">{{
            'common_advanced_label' | i18n
            }}</span>
        <i lv-icon="aui-icon-help"
            lv-tooltip="{{ 'protection_fileset_restore_advance_params_label' | i18n }}" lvColorState="true">
        </i>
    </lv-group>
</ng-template>
